﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Windows.Forms;
using System.Globalization;

namespace QLKS
{
    public partial class fThuePhong : Form
    {
        public fThuePhong()
        {
            InitializeComponent();
            _timer.Tick += new EventHandler(timer_Tick);
            _timer.Interval = 1000;
            _timer.Enabled = true;
            _timer.Start();
        }

        Timer _timer = new Timer();//cập nhật trạng thái đăng nhập của người dùng
        private bool _ktdangnhap;//biến tạm kiểm tra trạng thái đăng nhập
        private int soluongthem;
        private List<string> makh_dathem = new List<string>();

        /// <summary>
        /// Lấy danh sách loại phòng từ đó chọn phòng theo loại phòng mà khách muốn thuê
        /// </summary>
        private void cbloaiphong_itemUpdate()
        {
            try
            {
                LayDuLieu dl = new LayDuLieu();
                SqlDataReader dr = dl.LayTruongDuLieu("SELECT LoaiPhong FROM LOAIPHONG");
                cbloaiphong.Items.Clear();
                cbloaiphong.Items.Add("Tất cả");
                while (dr.Read())
                {
                    cbloaiphong.Items.Add(dr.GetString(0));
                }
                KetNoi.NgatKetNoi();
            }
            catch { }
            cbloaiphong.SelectedIndex = 0;
        }

        /// <summary>
        /// Lấy danh sách loại phòng từ đó chọn phòng theo loại phòng mà khách muốn thuê,
        /// kiểm tra người dùng đăng nhập chưa, nếu đăng nhập rồi thì cho phép thao tác, nếu chưa thì không cho phép thao tác
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void fThuePhong_Load(object sender, EventArgs e)
        {
            if (MainForm.ktdangnhap == true) //người dùng đã đăng nhập thì cho phép thao tác
            {
                XuLyChung xlc = new XuLyChung();
                tbmaphieu.Enabled = true;
                tbmaphieu.Text = xlc.TuDongThemMa("MP", "SELECT MaPhieu FROM PHIEUTHUEPHONG");
                tbngaythue.Enabled = true;
                CultureInfo culture = new CultureInfo("en-US");
                tbngaythue.Text = DateTime.Today.ToString("d", culture);
                tbdathanhtoan.Enabled = true;
                tbdathanhtoan.Text = "0";
                cbloaiphong.Enabled = true;
                cbloaiphong_itemUpdate();
                cbtongsokh.Enabled = true;
                cbsophong.Enabled = true;
                btthemkhachthue.Enabled = true;
                btxacnhan.Enabled = false;
                label1.Enabled = true;
                label2.Enabled = true;
                label3.Enabled = true;
                label4.Enabled = true;
                label5.Enabled = true;
                label6.Enabled = true;
                _ktdangnhap = MainForm.ktdangnhap;
            }
            else //ngược lại không cho thao tác
            {
                tbmaphieu.Enabled = false;
                tbngaythue.Enabled = false;
                tbdathanhtoan.Enabled = false;
                cbloaiphong.Enabled = false;
                cbtongsokh.Enabled = false;
                cbsophong.Enabled = false;
                btthemkhachthue.Enabled = false;
                btxacnhan.Enabled = false;
                label1.Enabled = false;
                label2.Enabled = false;
                label3.Enabled = false;
                label4.Enabled = false;
                label5.Enabled = false;
                label6.Enabled = false;
                _ktdangnhap = MainForm.ktdangnhap;
            }
        }

        /// <summary>
        /// Không nhận ký tự là chữ, nhận ký tự là số
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tbdathanhtoan_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
                e.Handled = true;
        }

        /// <summary>
        /// Thay đổi item là số phòng trong combobox số phòng
        /// cho tương ứng với loại phòng được chọn trong combobox loại phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbloaiphong_SelectedIndexChanged(object sender, EventArgs e)
        {
            cbsophong.Items.Clear();
            btxacnhan.Enabled = false;
            XuLyThuePhong xltp = new XuLyThuePhong();
            SqlDataReader temp = xltp.LayDanhSachPhong(cbloaiphong.Text.ToString());
            while (temp.Read())
            {
                cbsophong.Items.Add(temp[0].ToString());
            }
            try
            {
                cbsophong.SelectedIndex = 0;
            }
            catch { }
        }

        /// <summary>
        /// Sau khi chọn phòng cần thuê thì combobox tổng số khách hàng
        /// sẽ hiện số lượng khách tối đa mà phòng có thể chứa
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbsophong_SelectedIndexChanged(object sender, EventArgs e)
        {
            cbtongsokh.Items.Clear();
            btxacnhan.Enabled = false;
            LayDuLieu dl = new LayDuLieu();
            SqlDataReader dr = dl.LayTruongDuLieu("SELECT SoKhachToiDa FROM THAMSO");
            int temp = 0;
            while (dr.Read())
            {
                temp = Convert.ToInt32(dr.GetValue(0));
            }
            KetNoi.NgatKetNoi();
            for (int i = 1; i <= temp; i++)
            {
                cbtongsokh.Items.Add(i.ToString());
            }
            cbtongsokh.SelectedIndex = 0;
        }

        /// <summary>
        /// Thay đổi số lượng khách cần thêm
        /// khi thay đổi tổng số khách thuê thì đặt lại việc thêm khách từ đầu
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cbtongsokh_SelectedIndexChanged(object sender, EventArgs e)
        {
            makh_dathem.Clear();
            soluongthem = Convert.ToInt32(cbtongsokh.Text.ToString());
            btxacnhan.Enabled = false;
        }

        /// <summary>
        /// Mở form Cập nhật khách hàng với tùy chọn duy nhất là thêm khách hàng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btthemkhachhang_Click(object sender, EventArgs e)
        {
            fCapNhatKhachHang fcnkh = new fCapNhatKhachHang();
            fcnkh.Soluongthem = soluongthem;
            fcnkh.Makh_dathem = makh_dathem;
            fcnkh.ShowDialog();
            makh_dathem = fcnkh.Makh_dathem;
            soluongthem = fcnkh.Soluongthem;
            if (soluongthem == 0 && makh_dathem.Count != 0)
            {
                btxacnhan.Enabled = true;
            }
        }

        /// <summary>
        /// Mở form In phiếu thuê phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btinphieu_Click(object sender, EventArgs e)
        {
            fInPhieuThuePhong fiptp = new fInPhieuThuePhong();
            fiptp.Makh_dathem = makh_dathem;
            fiptp.Phong = cbsophong.Text;
            fiptp.Ngaythue = tbngaythue.Text;
            fiptp.ShowDialog();
        }

        /// <summary>
        /// Ghi dữ liệu lập phiếu thuê phòng vào CSDL
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btxacnhan_Click(object sender, EventArgs e)
        {
            XuLyThuePhong xltp = new XuLyThuePhong();
            if (xltp.ThuePhong(tbmaphieu.Text, tbngaythue.Text, tbdathanhtoan.Text, cbsophong.Text, makh_dathem) == false)
            {
                MessageBox.Show("Lập phiếu thuê phòng thất bại", " Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            else
            {
                DialogResult result = MessageBox.Show("Lập phiếu thuê phòng thành công. Bạn có muốn in phiếu thuê phòng vừa lập không?", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
                if (result == DialogResult.Yes)
                {
                    btinphieu.PerformClick();
                }
            }
            fThuePhong_Load(sender, e);
        }

        /// <summary>
        /// Đóng form Lập phiếu thuê phòng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void bthuy_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        /// <summary>
        /// Cập nhật tình trạng đăng nhập của người dùng
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void timer_Tick(object sender, EventArgs e)
        {
            if (MainForm.ktdangnhap != _ktdangnhap)
            {
                fThuePhong_Load(sender, e);
            }
        }
    }
}
